home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zk.d64 / txt.environment < prev    next >
Text File  |  2007-03-01  |  4KB  |  191 lines

  1. ┴╬ ┼╬╓╔╥╧╬═┼╬╘ ╙╘╥╔╬╟
  2.  
  3. BY ─ICK ╦LINGENS
  4. ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
  5.  
  6. ╥╒╬ THE FOLLOWING PROGRAM (IT IS ON
  7. DISK AS 'ENVIR/DEMO1'):
  8.  
  9. ╒╙┼ ENVIRONMENT
  10. ─╔═ ENVIR$ ╧╞ 126
  11. ENVIR$:="╘HIS STRING WAS LEFT HERE"
  12. STORE(X$)
  13.  
  14. ╬OW ╠╧┴─ AND ╥╒╬ THE PROGRAM
  15.  
  16.   ╒╙┼ ENVIRONMENT
  17.   ─╔═ ENVIR$ ╧╞ 126
  18.   ACCEPT(ENVIR$)
  19.   ╨╥╔╬╘ ENVIR$
  20.  
  21. ╘HE OUTPUT OF THIS PROGRAM IS...
  22.  
  23. ╘HIS STRING WAS LEFT HERE
  24.  
  25. ╬OTE: AFTER RUNNING THE FIRST PROGRAM
  26. FROM DISK IT CHAINS THE SECOND
  27. PROGRAM.
  28.  
  29. ╘HE TWO PROCEDURES ╙╘╧╥┼ AND ┴├├┼╨╘
  30. ARE OF COURSE IN THE PACKAGE
  31. ┼╬╓╔╥╧╬═┼╬╘. ╫ITH ╙╘╧╥┼ A STRING
  32. (WITH MAXIMUM LENGTH OF 126) CAN BE
  33. STORED OUTSIDE ├╧═┴╠: IN ITS
  34. ENVIRONMENT.
  35.  
  36. ╘HE STRING IS STORED FROM MEMORY
  37. ADDRESS $C080 (A PART OF THE ╥╙232
  38. BUFFER). ╫ITH THE FOLLOWING LINES
  39. ADDED TO THE SECOND PROGRAM
  40.  
  41.   MEM:=$C080
  42.   HILEN:=╨┼┼╦(MEM)
  43.   LOLEN:=╨┼┼╦(MEM+1)
  44.   ╨╥╔╬╘ HILEN*256+LOLEN
  45.  
  46. WE FIND THE REAL LENGTH OF THE
  47. ENVIRONMENT$; IN THIS CASE 25. ╧F
  48. COURSE IT IS ALSO POSSIBLE WITH
  49.  
  50.   ╨╥╔╬╘ ╠┼╬(ENVIR$)
  51.  
  52. ╫ITH ┴├├┼╨╘ WE CAN GET A STORED
  53. STRING FROM THE ENVIRONMENT AND
  54. ASSIGN IT TO A STRING VARIABLE.
  55.  
  56. ╘HE VALUE OF THE ENVIRONMENT$ IS
  57. ╙╒╨┼╥ GLOBAL: AS SHOWN, IT SURVIVES A
  58. ╬┼╫.
  59.  
  60. ╘HE ADDRESS $55 IS USED AS A GLOBAL
  61. FLAG: 0 MEANS NO ENVIRONMENT$; 1
  62. MEANS THAT THERE IS A SUPER GLOBAL
  63. STRING. ╘HE GLOBAL FLAG CAN BE ASKED
  64. WITH THE PACKAGE FUNCTION ╟╠╧┬┴╠.
  65. ╫ITH A ╙╘╧╥┼ THIS FLAG IS
  66. AUTOMATICALLY SET.
  67.  
  68. ╘HE ENVIRONMENT CAN BE CLEARED (RESET
  69. FLAG) WITH THE PROCEDURE
  70.  
  71.   ┌┼╥╧╟╠╧┬┴╠
  72.  
  73. ┴N ERROR MESSAGE IS REPORTED IF AN
  74. ┴├├┼╨╘ IS PERFORMED WITH A ZERO FLAG
  75. (NOT A VARIABLE), AND IF ONE TRIES TO
  76. ASSIGN AN ENVIRONMENT$ TO A STRING
  77. VARIABLE WITH AN IMPROPER LENGTH
  78. (ARGUMENT ERROR).
  79.  
  80. ┴N OTHER APPLICATION:
  81.  
  82.   ╒╙┼ ENVIRONMENT
  83.   ─╔═ RUNNED$ ╧╞ 2
  84.   RUN#:=1
  85.   ╔╞ GLOBAL ╘╚┼╬
  86.     ACCEPT(RUNNED$)
  87.     RUN#:=╓┴╠(RUNNED$)
  88.     RUN#:+1
  89.   ┼╬─╔╞
  90.   RUNNED$:=╙╘╥$(RUN#)
  91.   STORE(RUNNED$)
  92.   ╨╥╔╬╘ "╘HIS IS PROGRAM RUN #",RUN#
  93.  
  94. ╥UN THIS PROGRAM (IN EXTENDED FORM ON
  95. DISK AS 'ENVIR/DEMO3') A FEW TIMES
  96. AND LOOK AT THE CHANGING OUTPUT.
  97.  
  98. ┬ECAUSE THE ENVIRONMENT$ IS SUPER
  99. GLOBAL IT IS A GOOD HABIT TO LEAVE A
  100. PROGRAM WITH ┌┼╥╧╟╠╧┬┴╠, IF THE
  101. GLOBAL STRING IS NOT NEEDED IN
  102. ANOTHER PROGRAM.
  103.  
  104. ┴S ONE KNOWS IT IS ╬╧╘ POSSIBLE TO
  105. ╔═╨╧╥╘ VARIABLES INTO AN ┼╪╘┼╥╬┴╠
  106. PROCEDURE (OR FUNCTION).
  107.  
  108. ┬ECAUSE THE ENVIRONMENT$ RESIDES
  109. OUTSIDE ├╧═┴╠, IT IS POSSIBLE NOW
  110. PROVIDED THE ┼╬╓╔╥╧╬═┼╬╘ PACKAGE IS
  111. LINKED ONTO THE MAIN PROGRAM AND THE
  112. EXTERNAL PROCEDURE (SEE 'ENVIR/DEMO4'
  113. ON DISK).
  114.  
  115. ╘O STORE MORE THAN ONE STRING IN THE
  116. OUTSIDE A SPECIAL TECHNIQUE IS
  117. REQUIRED. ╔ SUGGEST TO SEPARATE THE
  118. STRINGS WITH A SPECIAL CHARACTER,
  119. SUCH AS THE BACKSLASH (┼NGLISH
  120. POUND).
  121.  
  122. ┬UT OF COURSE WE MUST KNOW HOW THE
  123. STRING HAS BEEN COMPOSED TO DECOMPOSE
  124. IT.
  125.  
  126. ╒╙┼ ENVIRONMENT
  127. ─╔═ ENVIR$ ╧╞ 126
  128. N:=5
  129. ─╔═ A$(N) ╧╞ 10
  130. A$(1):="├╧═┴╠"
  131. A$(2):="╒SERS"
  132. A$(3):="╟ROUP"
  133. A$(4):="╒╙┴"
  134. A$(5):="╠TD."
  135. //
  136. COMPOSE(ENVIR$)
  137. STORE(ENVIR$)
  138. //
  139. ACCEPT(ENVIR$)
  140. ╨╥╔╬╘ ELEMENT$(ENVIR$,3)
  141. //
  142. ╨╥╧├ COMPOSE(╥┼╞ ENVIR$) ├╠╧╙┼─
  143.  // START AND END ENVIR$ ALSO WITH
  144.  // THE SEPARATOR
  145.  ╔═╨╧╥╘ A$(), N
  146.  ╞╧╥ I#:=1 ╘╧ N ─╧
  147.   ENVIR$:+"\"+A$(I#)
  148.  ┼╬─╞╧╥ I#
  149.  ENVIR$:+"\"
  150. ┼╬─╨╥╧├ COMPOSE
  151. //
  152. ╞╒╬├ ELEMENT$(X$,N) ├╠╧╙┼─
  153.  ╞╧╥ I#:=1 ╘╧ N ─╧
  154.   P#:="\" ╔╬ X$ // STARTING SEPARATOR
  155.   X$:=X$(P+1:) // RIGHT$
  156.  ┼╬─╞╧╥ I#
  157.  P#:="\" ╔╬ X$ // ENDING SEPARATOR
  158.  ╔╞ P#>0 ╘╚┼╬
  159.   ╥┼╘╒╥╬ X$(:P-1)
  160.  ┼╠╙┼
  161.   ╥┼╘╒╥╬ X$
  162.  ┼╬─╔╞
  163. ┼╬─╞╒╬├ ELEMENT$
  164.  
  165. ╬OTE: ╔N THE PACKAGE ╙┘╙╘┼═ FOR ╔┬═
  166. ├╧═┴╠ THERE IS AN ENVIRONMENT$ TOO
  167. THAT CAN BE USED TO GET SOME
  168. PARAMETERS SET WITH THE ═╙/╨├-─╧╙
  169. COMMANDO ╙┼╘.
  170.  
  171. ╘HE ╔┬═ ├╧═┴╠ PROGRAM
  172.  
  173.   ╒╙┼ SYSTEM
  174.   ╨╥╔╬╘ ENVIRONMENT$("COMSPEC")
  175.   ╨╥╔╬╘ ENVIRONMENT$("COMALPKG")
  176.   ╨╥╔╬╘ ENVIRONMENT$("COMALMSG")
  177.   ╨╥╔╬╘ ENVIRONMENT$("HOST")
  178.  
  179. GIVES ON MY ╧LIVETTI ═24 COMPUTER THE
  180. FOLLOWING OUTPUT:
  181.  
  182.   \├:├╧══┴╬─.├╧═
  183.   \├╧═┴╠\╟╥┴╨╚
  184.   \├╧═┴╠\─╒╘├╚.═╙╟
  185.   ╧LIVETTI ═24
  186.  
  187. SHOWING THE COMMAND SPECIFICATION,
  188. THE LINKED PACKAGE, THE FILE FROM
  189. WHICH THE ERROR MESSAGES COME FROM
  190. AND THE HOST.
  191.